package wator.model;

/**
 * This interface defines drawing methods for individuals. Implementations
 * are usually in the view package. It is highly recommended to take a look
 * to the package {@link wator.view.swing} in order to get an idea how to use.
 * In general, a strategy has to be configured in each frame in order to get
 * a feasible canvas. How this configuration works is strongly dependent on
 * implementing subclasses. However, most of the time, this configuration may
 * be realized by some setters and the constructor.
 */
public interface DrawingStrategy {
	/**
	 * Draws an agent. The most important properties of agents in this method
	 * are their position and direction vector.
	 * 
	 * @param agent the agent to draw
	 * @throws NullPointerException
	 */
	void draw(Agent agent);
}
